package com.gep.controlador.manager.AcIndiceReparo;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Flashchart;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.SimpleCategoryModel;
import org.zkoss.zul.Window;

import com.gep.dto.EquipamentoDTO;
import com.gep.dto.PecaDTO;

public class ControladorAcIndiceReparo  extends Window {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public List<PecaDTO> listaPeca;

	public Flashchart grafico;

	public List<Object[]> dados;

	public Integer total;

	@SuppressWarnings("unchecked")
	public void carregarAcIndiceReparo() {
		total = 0;
		listaPeca = new ArrayList<PecaDTO>();
		grafico = (Flashchart) this.getFellow("grafico");
		HttpServletRequest request = (HttpServletRequest) Executions
				.getCurrent().getNativeRequest();
		HttpSession session = request.getSession(false);
		dados = (List<Object[]>) session.getAttribute("dadosAcIndiceReparo");
		if (dados == null) {
			Executions.sendRedirect("/zul/home.zul");
		} else {
//			this.carregarListaItens();
			this.carregarGrafico();
			Object object[] = dados.iterator().next();
			PecaDTO pecaDTO = (PecaDTO) object[3];
			Label labelNomePeca = (Label) this
					.getFellow("nomePeca");
			labelNomePeca.setValue("Peca: "
					+ pecaDTO.getNomePeca());
			Label labelTempoMedio = (Label) this.getFellow("tempoMedio");
			Double media = total.doubleValue() / dados.size();
			labelTempoMedio.setValue("Indice de Reparo: "
					+ String.format("%.2f", media) + " Dias");

		}

	}

//	public void carregarListaItens() {
//		Listbox listbox = (Listbox) this.getFellow("listBox");
//		for (Object[] object : dados) {
//			PecaDTO dto;
//			dto = (PecaDTO) object[3];
//			dto.setTempoMedioDeReparo(((Long) object[2]).intValue());
//			listaPeca.add(dto);
//		}
//		ListModelList model = null;
//		List items = listaPeca;
//		if (model == null) {
//			model = new ListModelList(items.size());
//			listbox.setModel(model);
//		}
//		model.addAll(items);
//		listbox.setVisible(true);
//	}

	public void carregarGrafico() {
		SimpleCategoryModel demoModel = new SimpleCategoryModel();
		for (Object[] object : dados) {
			Long quantidade;

			quantidade = ((BigInteger) object[2]).longValue();
			total += quantidade.intValue();

			demoModel.setValue("" + dados.indexOf(object), "Data de Reparo "+object[0]  ,
					quantidade);
		}
		grafico.setModel(demoModel);
	}
}
